/**
  ******************************************************************************
  * @file           : ble_fifo.h
  * @author			: duanzhe
  * @brief          : BLE数据传输缓冲区（FIFO）头文件
  *                   包含FIFO队列数据结构体定义、函数声明
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 乐普医电.
  *
  ******************************************************************************
  */
#ifndef __BLE_FIFO_H
#define __BLE_FIFO_H

#include "main.h"


/* Exported types ------------------------------------------------------------*/
typedef struct {
   uint8_t* fifoBuffer;        					/* fifo地址，写入fifo的数据实际存放的地址，由FIFO初始化程序指定 */
   uint32_t fifomaxsize;   						/* 用作fifo的物理空间最大容量 */
   uint32_t ptr_out;          					/* fifo中出队列的指针（用数组下标指代） */
   uint32_t ptr_in;           					/* fifo中入队列的指针（用数组下标指代） */
   uint32_t bytecount;      					/* fifo中现有字节数 */
   uint32_t datacount;   						/* fifo中存放的数据块个数 */
} fifo_t;

extern fifo_t BleRxFifoQueue;
extern fifo_t BleTxFifoQueue;

int FifoQueue_Init(fifo_t *q, uint8_t* fifoBuffer, uint32_t fifomaxsize);

uint8_t* FifoQueue_DataIn(fifo_t *q, uint8_t* x, uint16_t datasizes, uint32_t numdatas);
uint8_t* FifoQueue_DataOut(fifo_t *q, uint16_t* datasizes);


#endif

